package com.bub.pay.framework.wrap.annotation;

import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 系统日志
 * 该注解会向数据库操作日志表插入一条记录
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface SysLog {

    /**
     * 操作信息
     *
     * @return 操作信息
     */
    @AliasFor("info")
    String value() default "";

    /**
     * 操作信息
     *
     * @return 操作信息0
     */
    @AliasFor("value")
    String info() default "";

    /**
     * 不记录的参数名
     * 【默认不记录
     * org.springframework
     * javax.servlet.http
     * 相关包的参数(此包下的子类、实现类)】
     * @return 参数名
     */
    String[] ignoreParamNames() default {};

    /**
     * 是否为模板 默认为模板
     * <p>
     * 如果template = true
     * info = "分页查询充值订单$(#pageQueryVo.pageNumber)" 才能正常解析
     * 如果template = false
     * info = "'分页查询充值订单'+#pageQueryVo.pageNumber" 才能正常解析
     *
     * @return 是否为模板
     */
    boolean template() default true;
}
